/**
 * 考试练习：
 * 在VueX中定义两个子模块，module-a和module-b，
 * 在根模块、module-a、module-b的state中各自定义数组，
 * 在model-a的getters里面返回一个数组，其结果是根模块、module-a、module-b中三个数组的成员组成的新数组。
 **/ 

// 如果在组件中使用： {{$store.getters['a/getAll']}}
import { createStore } from 'vuex';


// 子模块也可以包含，state,getters...
const moduleA = {
    // 打开命名空间：1分
    namespace: true,
    state: {
        arr: ["a1","a2","a3",]
    },
    getters: {
        // 定义getters的方法：1分
        getAll(state,getters,rootState,rootGetters) {
            const arr = [];
            // 获取自己的arr：1分
            arr.push(...state.arr);
            // 获取根的arr：1分
            arr.push(...rootState.arr)
            // 获取b模块的arr: 1分
            arr.push(...rootGetters["b/getArr"])
        }
    }
}


const moduleB = {
    // 打开命名空间：1分
    namespace: true,
    state: {
        arr: ["b1","b2","b3",]
    },
    // 在模块B中定义getters：1分
    getters: {
        getArr() {
            return arr;
        }
    }
}

// 创建根模块，包含模块a和b，1分
export default createStore({
    state: {
        arr: ["根1","根2","根3"]
    },
    modules: {
        a: moduleA,
        b: moduleB
    }
})